React Router 基础
概述
React Router 是 React 应用中最常用的路由库,它允许你在单页应用(SPA)中实现页面导航。通过 React Router,你可以轻松地管理不同 URL 路径与组件之间的映射关系,从而实现动态导航和页面切换。
安装 React Router
首先,你需要在你的 React 项目中安装 React Router。你可以使用 npm 或 yarn 来安装:
npm install react-router-dom
或者
yarn add react-router-dom
基本概念
1. BrowserRouter
BrowserRouter 是 React Router 的核心组件之一,它使用 HTML5 的 history API 来保持 UI 与 URL 的同步。通常,你会将整个应用包裹在 BrowserRouter 中。
import { BrowserRouter } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
{/* 你的应用内容 */}
</BrowserRouter>
);
}
2. Route
Route 组件用于定义 URL 路径与组件之间的映射关系。你可以指定一个 path 属性和一个 component 属性,当 URL 匹配 path 时,对应的组件会被渲染。
import { Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
function App() {
return (
<BrowserRouter>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
</BrowserRouter>
);
}
3. Link
Link 组件用于在应用内部进行导航,它类似于 HTML 中的 <a> 标签,但不会导致页面刷新。
import { Link } from 'react-router-dom';
function Navigation() {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
);
}
4. Switch
Switch 组件用于确保只有一个 Route 会被渲染。如果没有 Switch,多个匹配的 Route 都会被渲染。
import { Switch, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
function App() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
</Switch>
</BrowserRouter>
);
}
实践练习
练习 1:创建一个简单的导航应用
- 创建一个 React 应用。
- 安装
react-router-dom。 - 创建两个组件:
Home和About。 - 使用
BrowserRouter、Route和Link组件来实现导航。
// Home.js
import React from 'react';
function Home() {
return <h1>Home Page</h1>;
}
export default Home;
// About.js
import React from 'react';
function About() {
return <h1>About Page</h1>;
}
export default About;
// App.js
import React from 'react';
import { BrowserRouter, Switch, Route, Link } from 'react-router-dom';
import Home from './Home';
import About from './About';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
</Switch>
</BrowserRouter>
);
}
export default App;
练习 2:动态路由
- 创建一个
User组件,用于显示用户信息。 - 使用动态路由来显示不同用户的页面。
// User.js
import React from 'react';
function User({ match }) {
return <h1>User Profile: {match.params.id}</h1>;
}
export default User;
// App.js
import React from 'react';
import { BrowserRouter, Switch, Route, Link } from 'react-router-dom';
import Home from './Home';
import About from './About';
import User from './User';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
<Link to="/user/1">User 1</Link>
<Link to="/user/2">User 2</Link>
</nav>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/user/:id" component={User} />
</Switch>
</BrowserRouter>
);
}
export default App;
总结
通过本教程,你已经学习了 React Router 的基础知识,包括 BrowserRouter、Route、Link 和 Switch 组件的使用。你还通过实践练习创建了一个简单的导航应用和动态路由应用。继续深入学习 React Router,你将能够构建更复杂的单页应用。